Imports & reading

EDA

pandas-profiling provides fairly comprehensive data exploration - quickly revealing potential missing data, datatype problems and correlations between IVs

clean data

drop phone column due to high cardinality
clean incorrect dtypes
fill missing values (since there are very few)
convert categoricals to 1-hot separate DV from IVs

search for best model

auto-sklearn (based on autoML) tests combinations of several model types, preprocessing & hyperparameter search. When compute hours are cheaper than man-hours - this is the place to start. If a simple model fits, don't bother spending weeks on a neural net.

train model & print best results

list of tested models & params

and their results

truncated because the full text is extremely long

Exploration of Profile of Models - sorted by F1

Conclusion & follow on

As usual, random forest is a solid model. The "best" model favors type I errors (FP - incorrectly predicting someone will leave when that person didn't). This is likely the preferred error (within reasonable levels) because a lost customer is likely more expensive than "playing it safe" on advertising to too many potential "defectors"

If I were to spend more time, I would investigate class balancing further since the DV is imbalanced.
The highly correlated IVs (next couple of cells) should be considered for removal (review source of variance - possibly through PCA - before deciding)

pearson correlation revealed the following

max_discount is highly correlated with promo_purchaser
acc_spend is highly correlated with acc_orders